package ru.compft.web.utils;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.util.StringUtils;
import ru.compft.common.utils.GlobalConstants;

/**
 * Created with IntelliJ IDEA.
 * User: VVasiliev
 * Date: 24.09.12
 * Time: 12:23
 * Утилиты для View-уровня. (Уровня отображения компонентов)
 */
public class ViewUtils {
    private static final Logger logger = LoggerFactory.getLogger(ViewUtils.class);

    /**
     * Получаем путь к модулю по viewId
     *
     * @param viewId
     * @return
     */
    public static String getModulePathByViewId(String viewId) {
        String path = null;
        if (StringUtils.hasText(viewId)) {
            // Строка должна начинаться со слова /modules
            if (viewId.startsWith(GlobalConstants.MODULES) && viewId.contains(GlobalConstants.XHTML_FILE_SUFFIX)) {
                path = viewId.substring(GlobalConstants.MODULES.length(), viewId.lastIndexOf(GlobalConstants.XHTML_FILE_SUFFIX));
            }
        }
        return path;
    }

    /**
     * Получаем код модуля по viewId
     *
     * @param viewId
     * @return
     */
    public static String getModuleCodeByViewId(String viewId) {
        String code = null;
        if (StringUtils.hasText(viewId)) {
            // Строка должна начинаться со слова /modules
            // после должен идти код модуля до следующего символа "/"
            if (viewId.startsWith(GlobalConstants.MODULES) && viewId.contains(GlobalConstants.XHTML_FILE_SUFFIX)) {
                final int beginIndex = GlobalConstants.MODULES.length() + 1;
                final int endIndex = viewId.indexOf(GlobalConstants.SLASH, beginIndex);
                code = viewId.substring(beginIndex, endIndex > 0 ? endIndex : beginIndex);
            }
        }
        return code;
    }

    public static void main(String[] args) {
        String viewId = getModuleCodeByViewId("/modules/admin/index.xhtml");
        System.out.println("viewId1 = " + viewId);
        viewId = getModuleCodeByViewId("/modules/admin.xhtml");
        System.out.println("viewId2 = " + viewId);
    }
}
